package com.cskaoyan.javase.method._1detail;
/**
 * 方法的语法：
 * [修饰符列表] 返回值类型 方法名 (形式参数列表){
 *   // 方法体
 * }
 *
 * 方法在定义时,写的参数是形式参数,形式参数需要指出它的数据类型
 * 方法在调用时,传入的参数是实际参数,实际参数是一个真正的参数
 * 思考:
 *      在调用方法时,传入方法的实参数据类型,需要和形参数据类型保持一致吗?
 *      不需要,虽然不需要完全保持一致,但肯定也不是乱写的,需要保持"兼容"
 *
 * 传入方法的实参数据类型 只要 能够自动类型转换到 形参数据类型
 * 那么该实参 就允许传入方法.
 * 这就意味着,如果方法的形参数据类型是double
 * 那么就可以传入所有的数值类型基本数据类型.
 *
 * 扩展:
 *      1.既然方法的实参数据类型和形参数据类型存在自动类型转换
 *          那么具体返回值的数据类型需要和返回值类型保持一致吗?
 *          也是不需要,可以保持"兼容",允许出现自动类型转换
 *
 *
 *      2.对于java而言,基本数据类型和引用数据类型都存在自动类型转换
 *          那么以上结论,适用于引用数据类型吗?
 *          适用,是可以的,是存在的(以后再说)
 *
 *
 *
 * @since 16:01
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        test(10);
        byte a = 10;
        test(a);
        char c = 'a';
        short s = 100;
        test(c);
        test(s);
        // test(0.1);

        test2(0.1);
        test2(10);
        test2(10L);
        test2(10F);
        // test2(true);
    }

    public static void test(int num){}
    public static void test2(double num){}

    public static int test3(){
        // return 1;
        byte a = 10;
        return a;
    }
    public static double test4(){
        // return 1;
        // byte a = 10;
        // return a;
        // return 0.1;
        return 10F;
    }
}
